Web log de Serge Boisse
On line depuis 1992 !
Voir aussi: Templater scripts
Templater est un langage de template qui permet d'insérer des variables et des fonctions de résultats dans vos notes Obsidian. Il permet également d'exécuter du code JavaScript manipulant ces variables et fonctions.
cf https://silentvoid13.github.io/Templater/
et https://www.thoughtasylum.com/2021/07/24/the-basics-of-templater-for-obsidian/
et how to run rmplater scripts
https://github.com/SilentVoid13/Templater/discussions/187
Templater peut se lancer de différentes façons :
<% tp.config.run_mode %>
, en tapant le raccourci, "1" sera inséré à l'emplacement du curseur. (donc mode 1 = lancement par hotkey)"< %
dans la barre de navigation (à gauche). Templater propose une liste de templates, et l'insère dans la note couranteLes commandes Templater (dans le gabarit) sont entre <% et %>
Elle sera exécutée quand on passe en mode édition (une seule fois à cause du cache)
Une commande sera "dynamique" si elle commence par <%+
et finit par %>
si le code contient du javascript il faut faire <%*
et %>
on a accès à la variable tp
Pour récupérer des éléments du frontmatter (YAML) :
tp.frontmatter["variable name with spaces"]
ou tout simplement "tp.frontmatter.nom"
A noter que ce ne semble pas compatible avec les variables "{{YAML}}"
Run mode : tp.config.run_mode
Nom fichier courant : tp.file.title
chemin : tp.file.path
citation du jour : tp.web.daily_quote()
Templater agit même dans les blocs de code !
ci dessous j'ai écrit (supprimer les blancs après les %) < %+ tp.file.title % >
Templater
Templater peut afficher des prompts pour demander dynamiquement des infos à l'utilisateur:
const name = await tp.system.prompt('Character Name');
et même de choisir une entrée dans une liste :
const sex = await tp.system.suggester(["Male","Female"],["Male","Female"]);
il suffit d'utiliser tp.app
.
en mode édition, on a même un système d'autocompléttion pour toutes les fonctions !
il faut utiliser const dv = this.app.plugins.plugins["dataview"].api;
exemple :
<%*
const dv = this.app.plugins.plugins["dataview"].api;
const query = 'LIST aliases WHERE aliases LIMIT 5';
const result = await dv.queryMarkdown(query);
if ( result.successful ) { tR += result.value }
else { tR += "~~~~\n" + result.error + "\n~~~~" }
%>
Il semble que la variable tR
est le résultat de templater (en markdown)
on peut remplacer query
par n'importe quelle requête dataviewjs
const query = `
LIST file.mday
LIMIT 10
`
Autre exemple :
<%*
const dv = app.plugins.plugins["dataview"].api;
const query = TABLE WITHOUT ID link(file.link, banner_icon + " " + project) AS Projet, row["Prochaine action"] as "Prochaine action" WHERE type="dashboard" AND status="en cours"
let out = await dv.queryMarkdown(query)
tR += out.value
%>
<%*
tR = "coucou"
%>"
ne marche pas ?
dans un bloc dataviewjs :
const tp = app.plugins.plugins["templater-obsidian"].templater.current_functions_object
Commentaires (0) :
Page :Ajouter un commentaire (pas besoin de s'enregistrer)
En cliquant sur le bouton "Envoyer" vous acceptez les conditions suivantes : Ne pas poster de message injurieux, obscène ou contraire à la loi, ni de liens vers de tels sites. Respecter la "netiquette", ne pas usurper le pseudo d'une autre personne, respecter les posts faits par les autres. L'auteur du site se réserve le droit de supprimer un ou plusieurs posts à tout moment. Merci !Ah oui : le bbcode et le html genre <br>, <a href=...>, <b>b etc. ne fonctionnent pas dans les commentaires. C'est voulu.